<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>11.9.JS对象-内置对象-日期对象</title>
    <script>
        // 倒计时效果
        // 核心算法：输入的时间减去现在的时间就是剩余时间，即倒计时
        // 但是不能拿着时分秒相减，必定会出现负值的情况
        // 所以用时间戳来做。用户输入时间总的毫秒数 减去现在时间的总毫秒数，得到的就是剩余时间的毫秒数
        // 把剩余时间总的毫秒数转换为天、时、分、秒(时间戳转换为时分秒)
        // 计算天数 公式：d = parseInt(总秒数/60/60/24)
        // 计算小时 公式：h = parseInt(总秒数/60/60%24)
        // 计算分钟 公式：m = parseInt(总秒数/60%60)
        // 计算当前秒数 公式：s = parseInt(总秒数%60)

        function countDown(time) {
            var nowTime = +new Date();                  // 返回的是当前时间总的毫秒数
            var inputTime = +new Date(time);            // 返回的是用户输入时间总的毫秒数
            var times = (inputTime - nowTime) / 1000;   // times 就是剩余时间总的毫秒数  除以1000 就是秒 1s=1000ms
            var days = parseInt(times / 60 / 60 / 24);  // 换算天数
            days = days < 10 ? '0' + days : days
            var hours = parseInt(times / 60 / 60 % 24); // 换算小时
            hours = hours < 10 ? '0' + hours : hours
            var minutes = parseInt(times / 60 % 60);    // 换算分钟
            minutes = minutes < 10 ? '0' + minutes : minutes
            var seconds = parseInt(times % 60);         // 换算秒数
            seconds = seconds < 10 ? '0' + seconds : seconds
            return days + '天' + hours + '时' + minutes + '分' + seconds + '秒';
        }
        console.log(countDown('2021-10-1 00:00:00'));
    </script>
</head>

<body>

</body>

</html>